perm filename KEDIT.SAI[KI,ALS] blob
sn#100467 filedate 1974-05-03 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00004 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 BEGIN "EDIT"
C00009 00003 OUTSTR(
C00012 00004 WHILE TRUE DO BEGIN "NEWN"
C00015 ENDMK
C⊗;
BEGIN "EDIT"
DEFINE ⊂="COMMENT",CR="'15",LF="'12", CRLF="CR&LF",TB="'11";
REQUIRE "DPYSUB.HDR[1,PDQ]" SOURCE_FILE;
REQUIRE "KPLAY.REL[KI,ALS]" LOAD_MODULE;
REQUIRE "FIXUPA.REL[X,ALS]" LIBRARY;
REQUIRE "IO.REL[X,ALS]" LIBRARY;
REQUIRE "SUIO.REL[X,ALS]" LIBRARY;
REQUIRE "LIB.REL[NET,NJM]" LIBRARY;
EXTERNAL PROCEDURE KPLAY;
INTEGER ARRAY DPYBUF[0:8192];
INTEGER ARRAY DATA[0:511];
INTEGER ARRAY NAMES[0:100];
INTEGER ARRAY DUMMY[1:2];
INTERNAL INTEGER ARRAY NAME[0:5];
INTEGER CHAN1,CHAN2,CHAN3,CHAN4,
NEW,I,J,K,L,V,LP,EOF1,EOF2,EOF3,EOF4,PP,SEGNAM,POINTX,PT0,PT1,PT2;
INTEGER ARRAY PT[0:8];
STRING READ,READ2,READ3,NEWNAM;
BOOLEAN ER;
LABEL STOPP;
PROCEDURE SAY;
BEGIN "SAY"
INTEGER I,J;
STRING READ2,READ3;
READ3←"";
FOR I←0 STEP 1 UNTIL 4 DO BEGIN
FOR J←1 STEP 1 UNTIL 5 DO BEGIN
READ3←READ3&READ[1 TO 1];
READ←READ[2 TO 20];
END;
NAME[I]←CVASC(READ3);
READ3←"";
END;
KPLAY;
END "SAY";
PROCEDURE SHUFFLE;
BEGIN "SHUF"
INTEGER I,J,K;
AIVECT(-640,386);
I←DPYPTR-PT1; ⊂ Words to save;
J←PT1-PT0; ⊂ Words to overwrite;
for k←1 step 1 until i do dpybuf[k+3]←dpybuf[k+3+j];
for k←i+1 step 1 until j+1 do dpybuf[k+3]←1;
PT1←DPYPTR←PT0+I;
END "SHUF";
PROCEDURE PLOT;
BEGIN "PLOT"
INTEGER I,J,K,L,JP,LP,II,JJ,AA,BB;
WHILE EOF1=0 DO BEGIN "LOOP1"
PTOCHW(0,'14127); ⊂ MAKE THE WHO LINE GO AWAY;
TYPLOC(-320,-512); DPYSET(DPYBUF);
AIVECT(-640,448); PT0←DPYPTR;
CLOSE(CHAN3); OPEN(CHAN3,"DSK",'10,0,2,0,0,0);
ENTER(CHAN3,"TMP1.TMP",0); READ←"TMP1.TMP";
FOR I←0 STEP 1 UNTIL 5 DO BEGIN
RIVECT(0,-JP); DPYSST(CVS(I)); RIVECT(0,JP);
FOR J←1 STEP 1 UNTIL 5 DO BEGIN
FOR K←0 STEP 1 UNTIL 511 DO DATA[K]←0;
IF EOF1=0 THEN ARRYIN(CHAN1,DATA[0],512);
ARRYOUT(CHAN3,DATA[0],512);
FOR K←0 STEP 2 UNTIL 510 DO BEGIN
L←LDB(POINT(12,DATA[K],11)); IF L>2047 THEN L←L-4096; L←L%16;
LP←L-JP; RVECT(1,LP); JP←L;
END;
END;
RIVECT(-647,-LP); RIVECT(-648,-128);
PT[I]←DPYPTR;
END;
RIVECT(0,50); DPYSST("0");
FOR I←1 STEP 1 UNTIL 5 DO BEGIN
RIVECT(225,0); DPYSST("."&CVS(I)); END;
DPYOUT(0); ⊂ PTOCHW(0,'10120);
OUTSTR("Portion shown says-"&CRLF);
READ←"TMP1.TMP";
CLOSE(CHAN3); SAY;
WHILE TRUE DO BEGIN "SAVE"
OUTSTR("Start saving at (space for none, CR for all) ");
IF (READ2←INCHWL)="" THEN BEGIN AA←0; BB←30; END
ELSE IF READ2=" " THEN AA←BB←0
ELSE BEGIN READ3←READ2[1 TO 1]; READ2←READ2[3 TO 3];
AA←(CVD(READ3))*5+CVD(READ2);
OUTSTR("Save to (CR if to 5:5) ");
READ2←INCHWL;
IF READ2="" THEN READ2←"5.5";
BB←(CVD(READ2[1 TO 1]))*5+CVD(READ2[3 TO 3]); END;
outstr("AA set at "&cvs(AA)&" BB set at "&CVS(BB)&TB);
IF BB≠0 THEN BEGIN "BBLOOP"
RELEASE(CHAN3);
OPEN(CHAN3,"DSK",'10,2,0,0,0,EOF3);
LOOKUP(CHAN3,"TMP1.TMP",ER);
IF AA≠0 THEN BEGIN
FOR I←0 STEP 1 UNTIL AA-1 DO
IF EOF3=0 THEN ARRYIN(CHAN3,DATA[0],512)
ELSE FOR K←0 STEP 1 UNTIL 511 DO DATA[0]←0;
OUTSTR("unneeded portions discarded"&crlf);
END;
FOR I←AA STEP 1 UNTIL BB-1 DO BEGIN
IF EOF3≠0 THEN DONE "SAVE";
FOR K←0 STEP 1 UNTIL 511 DO DATA[K]←0;
ARRYIN(CHAN3,DATA[0],512);
ARRYOUT(CHAN4,DATA[0],512);
END;
END "BBLOOP" ELSE OUTSTR("Nothing saved"&CRLF);
IF (BB≥29)∨(BB=0) THEN DONE "SAVE" ELSE
OUTSTR("You may append some more if you wish"&CRLF);
END "SAVE";
IF EOF1≠0 THEN BEGIN CLOSE(CHAN4); DONE "LOOP1"; END
ELSE BEGIN OUTSTR("DO you want more (CR if yes, space if no) ");
IF INCHWL≠"" THEN DONE "LOOP1" ELSE
OUTSTR("Next section coming up."&CRLF); END;
END "LOOP1";
CLOSE(CHAN1); CLOSE(CHAN3); CLOSE(CHAN4);
END "PLOT";
OUTSTR(
"This program allows one to hear a file, to open a new file (with extention .say),"
&CRLF&TB&
"adding the new file name to the list (in sixbit) in file KILIST.SIX"
&CRLF&TB&
"and to edit into this new file selected portions of the original file."
&CRLF&LF);
OUTSTR("A space only as old name is taken to mean LISTEN.TMP"&CRLF
&"A ? will cause the list in KILIST.SIX to be typed"&CRLF
&"A CR only terminates the session"&CRLF);
CHAN1←1; CHAN2←2; CHAN3←3; CHAN4←4;
START_CODE MOVE 0,['325004000000]; '047000400110; END;
CLOSE(CHAN2); OPEN (CHAN2,"DSK",'10,2,0,0,0,EOF2);
LOOKUP(CHAN2,"KILIST.SIX[KI,ALS]",ER);
ARRYIN(CHAN2,NAMES[0],100);
WHILE TRUE DO BEGIN "LOOP"
OUTSTR(CRLF&"Type the old file name (with extension) ");
ER←1; WHILE ER DO BEGIN "OLD"
IF ( READ←INCHWL)="" THEN BEGIN CLOSE(CHAN1); CLOSE(CHAN2);
CLOSE(CHAN3); CLOSE(CHAN4); GOTO STOPP; END;
IF READ=" " THEN READ←"LISTEN.TMP";
IF READ="?" THEN BEGIN
OUTSTR(CRLF& "The following files are listed)"&CRLF&LF);
FOR I←0 STEP 1 UNTIL 99 DO BEGIN
IF NAMES[I]=0 THEN DONE;
OUTSTR(CVXSTR(NAMES[I])&".SAY"&CRLF);
END;
CONTINUE "LOOP";
END;
CLOSE(CHAN1); OPEN(CHAN1,"DSK",'10,1,1,0,0,EOF1);
LOOKUP(CHAN1,READ,ER);
IF ER THEN OUTSTR("File "&READ&" could not be found. "
&CRLF&"Try again ")
ELSE DONE;
END "OLD";
SAY;
WHILE TRUE DO BEGIN "NEWN"
OUTSTR("Now type new name"&CRLF&
" (CR to overwrite TMP.SAY, space to skip editing ");
IF ( READ2←INCHWL)=" " THEN CONTINUE "LOOP";
IF READ2="" THEN BEGIN READ3←"TMP"; DONE "NEWN"; END;
IF READ2="?" THEN BEGIN
OUTSTR(CRLF& "The following files are listed)"&CRLF&LF);
FOR I←0 STEP 1 UNTIL 99 DO BEGIN
IF NAMES[I]=0 THEN DONE;
OUTSTR(CVXSTR(NAMES[I])&".SAY"&CRLF);
END;
CONTINUE "NEWN";
END;
READ3←"";
FOR I←0 STEP 1 UNTIL 5 DO BEGIN
IF READ2[1 TO 1]="." THEN DONE;
READ3←READ3&READ2[1 TO 1]; READ2←READ2[2 TO 5]; END;
NEW←CVSIX(READ3);
FOR I←0 STEP 1 UNTIL 99 DO BEGIN
IF NAMES[I]=0 THEN BEGIN NAMES[I]←NEW; DONE "NEWN"; END;
IF NAMES[I]=NEW THEN BEGIN
OUTSTR("New name already has been used"
&CRLF&"Space bar to try again or CR to overwrite "&CRLF);
IF INCHWL="" THEN DONE "NEWN";
DONE;
END;
END;
END "NEWN";
NEWNAM←READ3&".SAY";
OUTSTR("New name is to be "&NEWNAM&CRLF);
CLOSE(CHAN4); OPEN(CHAN4,"DSK",'10,0,2,0,0,0);
ENTER(CHAN4,NEWNAM,0);
PLOT;
CLOSE(CHAN2); OPEN(CHAN2,"DSK",'10,0,2,0,0,0);
ENTER(CHAN2,"KILIST.SIX[KI,ALS]",0);
ARRYOUT(CHAN2,NAMES[0],100);
CLOSE(CHAN2);
WHILE TRUE DO BEGIN
READ←NEWNAM;
OUTSTR(READ&" says-"&CRLF); SAY;
OUTSTR("Space bar to repeat, CR for next file ");
IF INCHWL ≠" " THEN DONE;
END;
END "LOOP";
OUTSTR("Program terminating"&CRLF);
START_CODE MOVE 0,['325000000000]; '047000400110; END;
STOPP:
RELEASE(CHAN1); RELEASE(CHAN2); RELEASE(CHAN3);
RELEASE(CHAN4);
END "EDIT";